package com.flyqiu.common.sc.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * FlyQiu统计注解，用于标记需要进行统计计算的字段
 * 该注解主要用于元数据处理，标识某个字段需要根据特定的计算类型来进行统计处理
 *
 * @Retention(RetentionPolicy.RUNTIME) 表示该注解在运行时仍然有效，允许在运行时通过反射获取到注解信息
 * @Target({ElementType.FIELD}) 表示该注解只能应用在字段上，即用于标记类的成员变量或局部变量
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface FlyQiuStatistical {
    /**
     * 定义输出字段名
     * 如果需要指定不同于标注字段的名称来进行统计结果的输出，可以通过该属性进行设置
     *
     * @return 输出的统计字段名称，默认为空字符串，表示与标注字段名称相同
     */
    String outFieldName() default "";

    /**
     * 定义统计计算类型
     * 该属性用于指定统计计算的方式或类型，例如求和、平均值等
     *
     * @return 统计计算的类型字符串
     */
    String calculateType();
}
